package com.mdd.system.service;

import com.mdd.common.base.page.PageValidate;
import com.mdd.common.core.PageResult;
import com.mdd.system.entity.SystemAuthAdmin;
import com.mdd.system.validate.SystemAdminCreateValidate;
import com.mdd.system.validate.SystemAdminSearchValidate;
import com.mdd.system.validate.SystemAdminUpInfoValidate;
import com.mdd.system.validate.SystemAdminUpdateValidate;
import com.mdd.system.vo.SystemAuthAdminDetailVo;
import com.mdd.system.vo.SystemAuthAdminInformVo;
import com.mdd.system.vo.SystemAuthAdminListedVo;
import com.mdd.system.vo.SystemAuthAdminSelvesVo;

/**
 * 系统管理员服务接口类
 */
public interface ISystemAuthAdminService {

    /**
     * 管理员列表
     *
     * @author fzr
     * @param pageValidate 分页参数
     * @param searchValidate 搜索参数
     * @return PageResult<SystemAuthAdminListedVo>
     */
    PageResult<SystemAuthAdminListedVo> list(PageValidate pageValidate, SystemAdminSearchValidate searchValidate);

    /**
     * 当前管理员
     *
     * @author fzr
     * @return SystemSelfVo
     */
    SystemAuthAdminSelvesVo self(SystemAuthAdminInformVo systemAuthAdmin);

    /**
     * 管理员详情
     *
     * @author fzr
     * @param id 主键参数
     * @return SystemAuthAdminDetailVo
     */
    SystemAuthAdminDetailVo detail(Long id);

    /**
     * 管理员新增
     *
     * @author fzr
     * @param createValidate 参数
     */
    void add(SystemAdminCreateValidate createValidate);

    /**
     * 管理员编辑
     *
     * @author fzr
     * @param updateValidate 参数
     * @param adminId 管理员ID
     */
    void edit(SystemAdminUpdateValidate updateValidate, Long adminId);

    /**
     * 当前管理员更新
     *
     * @author fzr
     * @param upInfoValidate 参数
     * @param adminId 管理员ID
     */
    void upInfo(SystemAdminUpInfoValidate upInfoValidate, Long adminId);

    /**
     * 管理员删除
     *
     * @author fzr
     * @param id 主键参数
     * @param adminId 管理员ID
     */
    void del(Long id, Long adminId);

    /**
     * 管理员状态切换
     *
     * @author fzr
     * @param id 主键参数
     */
    void disable(Long id, Long adminId);

    SystemAuthAdmin findByUsername(String username);


}
